#include <stdio.h>
#include "unistd.h"
#include "sys/types.h"

int main(int argc, char const *argv[])
{
    // 创建一个子进程  fork
    // 如何子进程fork成功 可以返回两次:
    // 如果返回值大于0,表示是在父进程中执行, pid的值就是子进程的进程id
    // 如果返回值等于0,表示是在子进程中执行
    printf("父进程: 父pid = %d\n", getpid());
    int pid = fork();

    if (pid == -1)
    {
        perror("进程fork失败");
    }
    else if (pid > 0)
    {
        // 在父进程中执行
        printf("父进程: 父pid = %d, 子pid=%d\n", getpid(), pid);
        sleep(1);
    }
    else if (pid == 0)
    {
        // 在子进程中执行
        printf("子进程: 父pid = %d, 子pid=%d\n", getppid(), getpid());
    }

    printf("自己pid = %d\n", getpid());

    return 0;
}
